package top.kaoshanji.p2ch03a.mapper;

import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import top.kaoshanji.p2ch03a.model.User;

import java.util.List;
import java.util.Map;

/**
 * 映射接口
 * @author kaoshanji
 * ^_^
 * create time 2025/4/17 21:18
 */
public interface UserQueryMapper {

    /**
     * 统计记录条数
     * @return 条数
     */
    Integer getUserCount();

    /**
     * 只有一条数据，使用Map返回
     * @param id 用户id
     * @return Map
     */
    Map<String, Object> queryUserMapById(Integer id);

    /**
     * 查询多条数据，返回Map集合
     * @return Map
     */
    @MapKey("id")
    Map<Integer, User> queryAllUserMap();

    /**
     * 接口方法的参数是Map类型
     * @param paramMap Map
     * @return List
     */
    List<User> queryUsersByMap(Map<String, Object> paramMap);

    /**
     * 接口方法的参数是List类型
     * @param list List
     * @return List
     */
    List<User> queryUsersByList(@Param("idList") List<Integer> list);

    /**
     * 接口方法的参数是数组类型
     * @param array 数组
     * @return List
     */
    List<User> queryUsersByArray(@Param("idArray") int [] array);

    /**
     * 传递表名获取总数
     * @param tableName 表名
     * @return 总数
     */
    Integer getCount(String tableName);

    /**
     * 传递字符串格式的多个id值
     * @param ids id
     * @return 影响的行数
     */
    int deleteMore(String ids);



}
